/**
 * @a https://leetcode.cn/problems/reverse-integer/
 */

#include "common.h"

class Solution {
public:
    int reverse(int x) {
        if(x == 0) return 0;
        int flag = x > 0 ? 1 : -1;      

        int positive_x = x * flag;
        long long rvse = 0;
        while(positive_x){
            int digit = positive_x % 10;
            rvse = rvse * 10 + digit;

            positive_x /= 10;
        }
        if(rvse > (1ll << 32) || rvse < -((1ll << 32) + 1)) return 0;
        
        return rvse*flag;
    }
};

// class Solution {
// public:
//     int reverse(int x) {
//         if(x == 0) return 0;
//         int flag = x > 0 ? 1 : -1;      

//         int positive_x = x * flag;
//         int rvse = 0;
//         while(positive_x){
//             int digit = positive_x % 10;
//             int tmp = rvse * 10 + digit;
//             if(tmp / 10 != rvse) return 0;

//             rvse = rvse * 10 + digit;
//             positive_x /= 10;
//         }        
//         return rvse*flag;
//     }
// };